import store from '@/store'

// 接口地址前缀
const ENUM_URL_PREFIX = {
  1: '/sot-admin-api/product/ticket',
  3: '/sot-admin-api/product/coupon-product',
  4: '/sot-admin-api/product/hotel',
  5: '/sot-admin-api/product/goods',
}

// 接口配置
const ENUM_AXIOS_CONFIG = {
  1: {
    getList: {
      url: 'listProduct'
    },
    d: {
      url: 'deleteProduct'
    },
    updateStatus: {
      url: 'changeStatus'
    },
    c: {
      url: 'createTicketProduct'
    },
    r: {
      url: 'detailProduct'
    },
    u: {
      url: 'updateTicketProduct'
    },
    exportList: {
      url: 'downloadReportList'
    },
  },
  3: {
    getList: {
      url: 'listProduct'
    },
    d: {
      url: 'deleteProduct'
    },
    updateStatus: {
      url: 'changeStatus'
    },
    c: {
      url: 'createCouponProduct'
    },
    r: {
      url: 'detailProduct'
    },
    u: {
      url: 'updateCouponProduct'
    },
    exportList: {
      url: 'downloadReportList'
    },
  },
  4: {
    getList: {
      url: 'listProduct'
    },
    d: {
      url: 'deleteProduct'
    },
    updateStatus: {
      url: 'changeStatus'
    },
    c: {
      url: 'createHotelProduct'
    },
    r: {
      url: 'detailProduct'
    },
    u: {
      url: 'updateHotelProduct'
    },
    exportList: {
      url: 'downloadReportList'
    },
  },
  5: {
    getList: {
      url: 'listProduct'
    },
    d: {
      url: 'deleteProduct'
    },
    updateStatus: {
      url: 'changeStatus'
    },
    c: {
      url: 'createProduct'
    },
    r: {
      url: 'detailProduct'
    },
    u: {
      url: 'updateProduct'
    },
    exportList: {
      url: 'downloadReportList'
    },
  }
}

// 表单默认值（公共部分）
const commonDefaultFormData = {
  existEndTime: true, // 总销售日期类型// 表单默认值
  mchId: store.getters.userInfo.merchantId, // 主商户id
  recommend: 0,
}

// 表单默认值
const ENUM_DEFAULT_FORM_DATA = {
  1: {
    ...commonDefaultFormData,
    businessTypeId: '1',
    returnSet: 1, // 是否可退款， 默认： 可退款 - 1
    limitType: 0, // 限购模式， 默认：不限购 - 0
    calendarStockFirst: 0, // 日历库存优先， 默认：否 - 0
    consumerSetting: null, // 检票设置
    purchaseQuantiyAtLeast: 1, // 起购数量， 默认最小1
    ticketSettingCode: '',
  },
  3: {
    ...commonDefaultFormData,
    businessTypeId: '3',
    needUseDate: 0, // 需要用户指定使用日
    channelType: 1, // 默认是云景票务
  },
  4: {
    ...commonDefaultFormData,
    businessTypeId: '4',
    limitType: 0, // 酒店默认不限购
    repertoryType: 4, // 酒店默认库存模式
    needUseDate: 0, // 需要用户指定使用日
    channelType: 1, // 默认是云景票务
    facilities: {}, // 酒店设施
    roomInfo: {
      inBreakfast: 0,
      inTv: 0,
      inWindow: 0,
      inBalcony: 0,
      canExtraBed: 0,
      inWifi: 0,
      inAir: 0,
      kettle: 0,
      coffeePot: 0,
      bathroom: 0,
      bathtub: 0,
      hairDrier: 0,
      bathrobe: 0,
      washingMachine: 0,
      toiletry: 0,
      houseType: 0
    }, // 房型信息
  },
  5: {
    ...commonDefaultFormData,
    businessTypeId: '5',
  }
}

// 商品游客可选游玩类型
const ENUM_COMMODITY_OPTIONAL_PLAY_TYPE = [
  { label: '天数范围', value: 1 },
  { label: '时间范围', value: 0 }
]

// 商品显示原价类型
const ENUM_COMMODITY_SWITCH_PRICE_TYPE = [
  { label: '开启原价显示', value: 1 },
  { label: '关闭原价显示', value: 0 }
]

// 商品库存类型
const ENUM_COMMODITY_STOCK_TYPE = [
  { label: '无限库存', value: 0 },
  { label: '总限量库存', value: 1 },
  { label: '日限量库存', value: 2 },
  { label: '总限量库存 + 日限量库存', value: 3 }
]

// 商品 - 票务预约类型
const ENUM_COMMODITY_TICKET_APPOINT_TYPE = [
  { label: '否', value: 0 },
  { label: '是', value: 1 }
]

// 商品 - 票务场次检票类型
const ENUM_COMMODITY_TICKET_SESSION_CHECK_TYPE = [
  { label: '否', value: 0 },
  { label: '是', value: 1 }
]

// 商品 - 票务过期类型
const ENUM_COMMODITY_TICKET_EXPIRE_TYPE = [
  { label: '自动检票', value: 1 },
  { label: '自动退票', value: 0 }
]

// 商品 - 退款类型
const ENUM_COMMODITY_RETURN_SET_TYPE = [
  { label: '不可退款，后台可手动退款', value: 0, enumName: 'NOT_CAN_RETURN' },
  { label: '可以退款，不需要审核', value: 1, enumName: 'CAN_RETRUN_BY_REVIEW' },
  { label: '可以退款，需要审核', value: 2, enumName: 'CAN_RETRUN_BY_NOT_REVIEW' }
]

// 商品 - 分享奖励金开关类型
const ENUM_COMMODITY_SHARE_REWARDS_SWITCH_TYPE = [
  { label: '无分享奖励金', value: 0 },
  { label: '有分享奖励金', value: 1 }
]

// 商品 - 分享奖励金类型
const ENUM_COMMODITY_SHARE_REWARDS_RULER_TYPE = [
  { label: '按百分制计算奖励金', value: 0 },
  { label: '按金额计算', value: 1 }
]

// 商品限购类型
const ENUM_COMMODITY_LIMIT_TYPE = [
  { label: '不限购', value: 0 },
  { label: '按用户Id限购', value: 1 },
  { label: '按订单限购', value: 2 }
]

// 券类商品有效期类型
const ENUM_COMMODITY_COUPON_VALID_TYPE = [
  { label: '时间范围', value: 0, enumName: 'TIME_RANGE' },
  { label: '天数范围', value: 1, enumName: 'DAY_RANGE' },
  { label: '预定日当天有效', value: 2, enumName: 'DAY_OF_RESERVE_RANGE' }
]

// 实物商品邮费类型
const ENUM_COMMODITY_GOODS_FREE_SHIPPING_TYPE = [
  { label: '包邮', value: 0 },
  { label: '普通快递到付', value: 1 },
  { label: '顺丰快递到付', value: 2 }
]

// 酒店设施相关枚举
const ENUM_COMMODITY_HOTEL_FACILITY_TYPE = {
  PARKING: [
    { label: '有停车场', value: 1 },
    { label: '有充电桩', value: 2 },
    { label: '摩托车停泊', value: 3 }
  ],
  TRAFFIC: [
    { label: '送机服务', value: 1 },
    { label: '接机服务', value: 2 },
    { label: '租车服务', value: 3 },
  ],
  INFORMATION: [
    { label: '公共区域WIFI', value: 1 },
    { label: '公共区域电脑', value: 2 },
  ],
  RESTAURANT: [
    { label: '中餐厅', value: 1 },
    { label: '西餐厅', value: 2 },
    { label: '送餐服务', value: 3 },
    { label: '酒吧', value: 4 },
    { label: '咖啡吧', value: 5 },
    { label: '综合餐厅', value: 6 },
    { label: '日韩餐厅', value: 7 },
    { label: '东南亚餐厅', value: 8 }
  ],
  RECREATION: [
    { label: '健身房', value: 1 },
    { label: '游泳池', value: 2 },
    { label: '足浴/SPA', value: 3 },
    { label: '棋牌室', value: 4 },
    { label: '夜总会/KTV', value: 5 },
  ],
  BUSINESS: [
    { label: '会议', value: 1 },
    { label: '传真/复印', value: 2 },
    { label: '商务服务', value: 3 },
    { label: '多功能厅', value: 4 }
  ],
  RECEPTION: [
    { label: '行李寄存', value: 1 },
    { label: '邮政服务', value: 5 },
    { label: '叫醒服务', value: 8 },
    { label: '礼宾服务', value: 9 },
    { label: '外币兑换服务', value: 10 },
    { label: '专职行李员', value: 11 },
    { label: '专职门童', value: 12 },
    { label: 'VIP通道入住', value: 13 },
    { label: '英文服务', value: 16 },
    { label: '旅游票务服务', value: 6 },
    { label: '旅游资讯服务', value: 7 },
    { label: '24小时前台服务', value: 3 },
    { label: '24小时大堂经理', value: 4 },
    { label: '免费旅游交通图', value: 15 },
    { label: '信用卡预结算服务', value: 14 },
    { label: '前台贵重物品保险箱', value: 2 }
  ],
  OTHER: [
    { label: '洗衣服务', value: 1 },
    { label: '熨衣服务', value: 2 },
  ]
}


/* 商品渠道相关枚举  */
// 商品渠道状态
const ENUM_COMMODITY_CHANNEL_STATUS = [
  { label: '启用', value: 1, color: '#67C23A', enum: 'ENABLE' },
  { label: '停用', value: 0, color: '#F56C6C', enum: 'DISABLE' }
]

// 商品渠道授权状态
const ENUM_COMMODITY_CHANNEL_AUTH_STATUS = [
  { label: '已授权', value: 1, color: '#67C23A' },
  { label: '未授权', value: 0, color: '#909399' }
]

// 商品渠道授权审核状态
const ENUM_COMMODITY_CHANNEL_AUTH_AUDIT_STATUS = [
  { label: undefined, value: null, enum: 'NO_AUDIT' },
  { label: '待审核', value: 1, enum: 'AUDIT_WAITING' },
  { label: '审核通过', value: 2, enum: 'AUDIT_OK' },
  { label: '审核驳回', value: 3, enum: 'AUDIT_FAIL' }
]

// 商品渠道引入方审核类型
const ENUM_COMMODITY_CHANNEL_AGANT_AUDIT_TYPE = [
  { label: '不需要', value: 0, enum: 'NOT_NEED_AUDIT' },
  { label: '需要', value: 1, enum: 'NEED_AUDIT' }
]

// 商品渠道类型
const ENUM_COMMODITY_CHANNEL_TYPE = [
  { label: '自有渠道', value: 1 },
  { label: '平台渠道', value: 2 }
]

/* 云仓市场相关枚举  */
// 云仓市场授权状态
const ENUM_CLOUD_MARKET_AUTH_STATUS = [
  { label: '未授权', value: null, color: '#909399' },
  { label: '未授权', value: 0, color: '#909399' },
  { label: '已授权', value: 1, color: '#67C23A' },
]

// 云仓市场授权审核状态
const ENUM_CLOUD_MARKET_AUTH_AUDIT_STATUS = [
  { label: undefined, value: null, enum: 'NO_AUDIT' },
  { label: '待审核', value: 1, enum: 'AUDIT_WAITING' },
  { label: '审核通过', value: 2, enum: 'AUDIT_OK' },
  { label: '审核驳回', value: 3, enum: 'AUDIT_FAIL' }
]

const getEnumValueByLabel = (enumDict, label) => {
  const match = enumDict.find(item => item.label === label)
  return match && match.value
}

const getEnumValueByEnumName = (enumDict, enumName) => {
  const match = enumDict.find(item => item.enumName === enumName)
  return match && match.value
}

const getEnumByValue = (enumDict, value) => {
  const match = enumDict.find(item => item.value === value)
  return match
}

const getEnumType = (enumDict) => {
  const match = {}
  enumDict.map(item => {
    match[item.enum] = item.value
  })
  return match
}

export default {
  ENUM_URL_PREFIX,
  ENUM_AXIOS_CONFIG,
  ENUM_DEFAULT_FORM_DATA,

  ENUM_COMMODITY_LIMIT_TYPE,
  ENUM_COMMODITY_STOCK_TYPE,
  ENUM_COMMODITY_RETURN_SET_TYPE,
  ENUM_COMMODITY_COUPON_VALID_TYPE,
  ENUM_COMMODITY_SWITCH_PRICE_TYPE,
  ENUM_COMMODITY_OPTIONAL_PLAY_TYPE,
  ENUM_COMMODITY_TICKET_EXPIRE_TYPE,
  ENUM_COMMODITY_TICKET_APPOINT_TYPE,
  ENUM_COMMODITY_HOTEL_FACILITY_TYPE,
  ENUM_COMMODITY_TICKET_SESSION_CHECK_TYPE,
  ENUM_COMMODITY_GOODS_FREE_SHIPPING_TYPE,
  ENUM_COMMODITY_SHARE_REWARDS_RULER_TYPE,
  ENUM_COMMODITY_SHARE_REWARDS_SWITCH_TYPE,

  ENUM_COMMODITY_CHANNEL_TYPE,
  ENUM_COMMODITY_CHANNEL_STATUS,
  ENUM_COMMODITY_CHANNEL_AUTH_STATUS,
  ENUM_COMMODITY_CHANNEL_AUTH_AUDIT_STATUS,
  ENUM_COMMODITY_CHANNEL_AGANT_AUDIT_TYPE,

  ENUM_CLOUD_MARKET_AUTH_STATUS,
  ENUM_CLOUD_MARKET_AUTH_AUDIT_STATUS,

  getEnumType,
  getEnumByValue,
  getEnumValueByLabel,
  getEnumValueByEnumName
}
